<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>商品详情</title>
    <!-- jquery -->
    <script type="text/javascript" src="/js/jquery.min.js"></script>
    <!-- bootstrap -->
    <link rel="stylesheet" type="text/css" href="/bootstrap/css/bootstrap.min.css"/>
    <script type="text/javascript" src="/bootstrap/js/bootstrap.min.js"></script>
    <!-- layer -->
    <script type="text/javascript" src="/layer/layer.js"></script>
    <!-- common.js -->
    <script type="text/javascript" src="/js/common.js"></script>
</head>
<body>
<div class="panel panel-default">
    <div class="panel-heading">秒杀商品详情</div>
    <div class="panel-body">
        <span id="userTip"> 您还没有登录，请登陆后再操作<br/></span>
        <span>没有收货地址的提示。。。</span>
    </div>
    <table class="table" id="goods">
        <tr>
            <td>商品名称</td>
            <td colspan="3" id="goodsName"></td>
        </tr>
        <tr>
            <td>商品图片</td>
            <td colspan="3"><img id="goodsImg" width="200" height="200"/></td>
        </tr>
        <tr>
            <td>秒杀开始时间</td>
            <td id="startTime"></td>
            <td>
                <input type="hidden" id="remainSeconds">
                <span id="seckillTip"></span>
            </td>
            <td>
                <div class="row">
                    <div class="form-inline">
                        <img id="captchaImg" width="130" height="32" onclick="refreshCaptcha()" style="display: none"><!--验证码图片-->
                        <input id="captcha" class="form-control" style="display: none"><!--验证码输入框-->
                        <button class="btn btn-primary" type="button" id="buyButton"
                                onclick="getSeckillPath()">立即秒杀<!--不加验证码时，直接访问doSeckill，如过隐藏接口地址功能，需要先到getSeckillPath，如果加上验证码的功能，然后再内部跳转到doSeckill-->
                            <input type="hidden" name="goodsId" id="goodsId">
                        </button>
                    </div>
                </div>
            </td>
        </tr>
        <tr>
            <td>商品原价</td>
            <td colspan="3" id="goodsPrice"></td>
        </tr>
        <tr>
            <td>秒杀价</td>
            <td colspan="3" id="seckillPrice"></td>
        </tr>
        <tr>
            <td>库存数量</td>
            <td colspan="3" id="stockCount"></td>
        </tr>
    </table>
</div>
</body>
<script>
    $(function () {
        // countDown();
        getDetails();
    });

    // 获取验证码图片
    function refreshCaptcha() {
        $("#captchaImg").attr("src", "/seckill/captcha?goodsId=" + $("#goodsId").val() + "&time=" + new Date());
    }

    // 根据用户和商品id给一个唯一的秒杀接口地址
    function getSeckillPath() {
        var goodsId = $("#goodsId").val();
        var captcha = $("#captcha").val();// 传用户输入的验证码，为了在执行秒杀前，先判断验证码的正确性
        g_showLoading();
        $.ajax({
            url: "/seckill/path",
            type: "GET",
            data: {
                goodsId: goodsId,
                captcha:captcha
            },
            success: function (data) {
                if (data.code == 200) {// 响应成功时，执行秒杀
                    var path = data.obj;
                    doSeckill(path);
                } else {
                    layer.msg(data.message);
                }
            },
            error: function () {
                layer.msg("客户端请求错误");
            }
        });
    }

    // 获取下单秒杀的结果
    function getResult(goodsId) {
        g_showLoading();
        $.ajax({
            url: "/seckill/getResult",
            type: "GET",
            data: {
                goodsId: goodsId
            },
            success: function (data) {
                if (data.code == 200) {
                    var result = data.obj;
                    if (result == -1 ) {
                        layer.msg("对不起，秒杀失败");
                    } else if (result == 0) {// 秒杀下单中
                        setTimeout(function () {
                            getResult(goodsId)// 执行下单操作
                        });
                    } else {
                        layer.confirm("恭喜您，秒杀成功！查看订单？", {btn: ["确定", "取消"]},
                            function () {
                                window.location.href = "/orderDetail.html?orderId=" + result;
                            },
                            function () {
                                layer.close();
                            }
                        )
                    }
                }
            },
            error: function () {
                layer.msg("客户端请求错误");
            }
        });
    }

    //秒杀方法
    function doSeckill(path) {
        $.ajax({
            url: '/seckill/' + path + '/doSeckill',
            type: "POST",
            data: {
                goodsId: $('#goodsId').val()
            },
            success: function (data) {
                if (data.code == 200) {// 下单中
                    // window.location.href="/orderDetail.html?orderId="+data.obj.id;// 直接跳转到订单详情页面
                    getResult($("#goodsId").val());// 判断下单成功与否，返回不同的结果
                } else {
                    layer.msg(data.message);
                }
            }, error: function () {
                layer.msg("客户端请求出错");
            }

        });
    }

    // 从后端获取详情页的数据对象
    function getDetails() {
        var goodsId = g_getQueryString("goodsId");
        console.log(goodsId);
        $.ajax({
            url: '/goods/toDetail/' + goodsId,
            type: 'GET',
            success: function (data) {
                if (data.code == 200) {
                    render(data.obj);
                    countDown();
                } else {
                    layer.msg("客户端请求出错");
                }
            },
            error: function () {
                layer.msg("客户端请求出错");
            }
        })
    }

    // 在详情静态界面填充从后端换取到的数据对象的动态值
    function render(detail) {
        var user = detail.user;
        var goodsVo = detail.goodsVo;
        var remainSeconds = detail.remainSeconds;
        if (user) {
            $("#userTip").hide();
        }
        $("#goodsName").text(goodsVo.goodsName);
        $("#goodsImg").attr("src", goodsVo.goodsImg);
        $("#startTime").text(new Date(goodsVo.startDate).format("yyyy-MM-dd HH:mm:ss"));
        $("#remainSeconds").val(remainSeconds);
        $("#goodsId").val(goodsVo.id);
        $("#goodsPrice").text(goodsVo.seckillPrice);
        $("#stockCount").text(goodsVo.stockCount);

    }

    // 秒杀状态、倒计时展示
    function countDown() {
        var remainSeconds = $("#remainSeconds").val();
        var timeout;
        //秒杀还未开始
        if (remainSeconds > 0) {
            $("#buyButton").attr("disabled", true);
            $("#seckillTip").html("秒杀倒计时：" + remainSeconds + "秒");
            timeout = setTimeout(function () {
                // $("#countDown").text(remainSeconds - 1);
                $("#remainSeconds").val(remainSeconds - 1);
                countDown();
            }, 1000);
            // 秒杀进行中
        } else if (remainSeconds == 0) {
            $("#buyButton").attr("disabled", false);
            if (timeout) {
                clearTimeout(timeout);
            }
            $("#seckillTip").html("秒杀进行中")
            refreshCaptcha();// 保证在秒杀进行中时访问商品详情页面时，会直接调用获取验证码的方法，而不是手动刷新调用
            $("#captchaImg").show();// 显示验证码图片
            $("#captcha").show();// 显示验证码输入框
        } else {
            $("#buyButton").attr("disabled", true);
            $("#seckillTip").html("秒杀已经结束");
            $("#captchaImg").hide();// 隐藏验证码图片
            $("#captcha").hide();// 隐藏验证码输入框
        }
    };

</script>
</html>